import java.util.ArrayList;
import java.util.Arrays;

/*
 * @lc app=leetcode.cn id=500 lang=java
 *
 * [500] 键盘行
 */

// @lc code=start
class Solution {
    String[] keyBoard = new String[]{"QWERTYUIOP","ASDFGHJKL","ZXCVBNM"};
    public String[] findWords(String[] words) {
        //先把每个字母对应的行数放进去,可以用hashmap，但比较好的是用char转int
        int[] lines = new int[128];
        String[] res = new String[words.length];//先开一个words.length的数组放答案
        for(int i = 0; i<keyBoard.length;i++){
            for(char c : keyBoard[i].toCharArray()){
                lines[c]=i+1;//把指定行数放进去，注意不要放0
            }
        }

        int count = 0;//统计满足要求的单词
        for(String word : words){
            int lineNum = 0;//默认为0
            boolean isOneLine = true;
            for(char c :word.toCharArray()){
                c = Character.toUpperCase(c);//转为大写字母
                if(lineNum!=0 && lineNum !=lines[c]){
                    isOneLine = false;
                    break;
                }else{
                    lineNum=lines[c];
                }
            }
            if(isOneLine){
                res[count++]=word;
            }
        }
        return Arrays.copyOf(res, count);
    }
}
// @lc code=end

